﻿namespace MetaProperties.Core
{
    using System;

    using MetaProperties.Framework;

    /// <summary>
    /// Defines an interface for filtering events in a pipeline.
    /// </summary>
    public interface IEventFilter
    {
        /// <summary>
        /// Sets the MetaProperty configuration.
        /// </summary>
        /// <param name="configuration">The configuration.</param>
        void SetMetaPropertyConfiguration(MetaPropertyConfiguration configuration);

        /// <summary>
        /// Performs filtering of the event.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        /// <param name="pipeline">The pipeline.</param>
        void PerformFilter(object sender, EventArgs args, IFilterPipeline pipeline);
    }
}
